package com.itcast.quartz.main;

import com.itcast.quartz.job.HelloJob;
import com.itcast.quartz.job.HelloJobTrigger;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Date;

public class HelloSchedulerDemoTrigger {
    public static void main(String[] args) throws SchedulerException {
        //1.调度器（Scheduler），从工厂中获取调度的实例（默认实例化new StdSchedulerFactory();）
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        //2.任务实例（JobDetail）
        // 加载任务类，与HelloJob完成绑定，要求HelloJob实现Job接口
        JobDetail jobDetail = JobBuilder.newJob(HelloJobTrigger.class)
                //参数1：任务的名称（唯一实例）；参数2：任务组的名称，可选，默认DEFAULT
                .withIdentity("job1", "group1")
                .build();

        Date date = new Date();
        date.setTime(date.getTime()+3000);

        //3.触发器（Trigger）
        Trigger trigger = TriggerBuilder.newTrigger()
                //参数1：触发器的名称（唯一实例）；参数2：触发器组的名称
                .withIdentity("trigger1", "group1")
                .startNow()
                //.startAt(new Date())
                .endAt(date)
                //每5秒执行一次
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(3))
                .build();

        //让调度器关联任务和触发器，保证按照触发器定义的条件执行任务
        scheduler.scheduleJob(jobDetail, trigger);
        //启动
        scheduler.start();

    }
}
